package com.zlk.algorithm.huawei.nowcoder.find;


import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Scanner;

/**
 * @program: algorithm
 * @ClassName HJ27
 * @description:
 * @author: slfang
 * @create: 2024-12-24 09:49
 * @Version 1.0
 **/
public class HJ27 {

    //定义一个单词的“兄弟单词”为：交换该单词字母顺序（注：可以交换任意次），而不添加、删除、修改原有的字母就能生成的单词。
    //兄弟单词要求和原来的单词不同。例如： ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。
    //现在给定你 n 个单词，另外再给你一个单词 x ，让你寻找 x 的兄弟单词里，按字典序排列后的第 k 个单词是什么？
    //注意：字典中可能有重复单词。

    //  1<=n<=1000
    //
    //  6 cab ad abcd cba abc bca bca abc 3
    //
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            String[] s = str.split(" ");
            String strn = s[0];
            String strk = s[s.length-1];
            String desWord = s[s.length-2];
            char[] desChar = desWord.toCharArray();
            Arrays.sort(desChar);
            String desSortStr = new String(desChar);
            String words = str.substring(strn.length()+1,str.length()-(strk.length()+desWord.length()+2));
            String[] wordsArr = words.split(" ");
            PriorityQueue<String> priorityQueue = new PriorityQueue<>();
            for (int i = 0; i < wordsArr.length; i++) {
                String word = wordsArr[i];
                if(word.length()==desWord.length()&&!word.equals(desWord)){
                    char[] chars = word.toCharArray();
                    Arrays.sort(chars);
                    if(new String(chars).equals(desSortStr)){
                       priorityQueue.add(word);
                    }
                }
            }
            int index = 0;
            int size = priorityQueue.size();
            int k = Integer.valueOf(strk);
            String ans ="";
            while (index<k&&!priorityQueue.isEmpty()){
                ans = priorityQueue.poll();
                index++;
            }
            if(index==k){
                System.out.println(size);
                System.out.println(ans);
            }else{
                System.out.println(size);
            }
        }
    }



}
